NVIDIA TensorRT 模型轉換指南
將 ONNX 模型轉換為 TensorRT 引擎並進行 FP16/INT8 優化的完整實施指南。
使用案例
應用:在 NVIDIA GPU 上加速深度學習推論
優點:
- 相比 CUDA 的性能提升
- 降低實時推論延遲
- 優化記憶體使用
- 支援 FP16 和 INT8 量化
背景分析
為什麼使用 TensorRT?
TensorRT 是一個高性能深度學習推論優化器和運行時,可為部署深度學習模型提供最佳性能。
主要功能:
- ✅ 自動核心優化
- ✅ 層融合和精度校準
- ✅ 動態張量形狀
- ✅ 多 GPU 支援
- ✅ 生產環境部署

支援平台
| 平台 | 需求 |
|---|---|
| 硬體 | NVIDIA GPU(Jetson、Tesla、GeForce 等) |
| 作業系統 | Ubuntu 20.04/22.04、Windows 10/11 |
| 驅動 | 最新 NVIDIA 驅動 |
| CUDA | CUDA 12.5 或更高版本 |

實施步驟
步驟 1:硬體驗證
先決條件:
- NVIDIA GPU 設備
- Ubuntu OS(推薦 22.04)
- 已安裝最新 NVIDIA 驅動
驗證命令:
# 檢查 GPU 存在
nvidia-smi
# 檢查 CUDA 版本
nvcc --version
實戰範例:
- 硬體:ASR-A701
- 平台:NVIDIA Jetson Orin
步驟 2:安裝 NVIDIA 驅動
如果使用 Jetson 平台,可以跳過此步驟。
準備:
- 從 NVIDIA 網站 下載最新 NVIDIA 驅動
- 將 Nouveau 驅動加入黑名單
安裝:
# 將 Nouveau 驅動加入黑名單
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
# 重新啟動系統
sudo reboot
# 安裝 NVIDIA 驅動
sudo chmod +x *.run
sudo ./*.run
驗證:
# 檢查驅動安裝
nvidia-smi

步驟 3:安裝 CUDA Toolkit
如果使用 Jetson 平台,可以跳過此步驟。
安裝:
# 新增 CUDA 儲存庫
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1_all.deb
sudo apt update
# 安裝 CUDA Toolkit 12.6
sudo apt install cuda-toolkit-12-6
驗證:
# 檢查 CUDA 安裝
/usr/local/cuda/bin/nvcc -V

步驟 4:安裝 TensorRT
如果使用 Jetson 平台,可以跳過此步驟。
儲存庫設置:
# 新增 NVIDIA 儲存庫金鑰
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/3bf863cc.pub
# 新增儲存庫
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /"
# 更新套件清單
sudo apt-get update
安裝 TensorRT 套件:
sudo apt-get install \
libnvinfer-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-dispatch-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-dispatch10=10.3.0.26-1+cuda12.5 \
libnvinfer-headers-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-headers-plugin-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-lean-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-lean10=10.3.0.26-1+cuda12.5 \
libnvinfer-plugin-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-plugin10=10.3.0.26-1+cuda12.5 \
libnvinfer-vc-plugin-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-vc-plugin10=10.3.0.26-1+cuda12.5 \
libnvinfer10=10.3.0.26-1+cuda12.5 \
libnvonnxparsers-dev=10.3.0.26-1+cuda12.5 \
libnvonnxparsers10=10.3.0.26-1+cuda12.5 \
tensorrt-dev=10.3.0.26-1+cuda12.5 \
libnvinfer-samples=10.3.0.26-1+cuda12.5 \
libnvinfer-bin=10.3.0.26-1+cuda12.5 \
libcudnn9-cuda-12=9.3.0.75-1 \
libcudnn9-dev-cuda-12=9.3.0.75-1
鎖定 TensorRT 套件:
sudo apt-mark hold \
libnvinfer* \
libnvparsers* \
libnvonnxparsers* \
libcudnn9* \
python3-libnvinfer* \
uff-converter-tf* \
onnx-graphsurgeon* \
graphsurgeon-tf* \
tensorrt*
驗證:
# 檢查 TensorRT 安裝
/usr/src/tensorrt/bin/trtexec --help
# 驗證安裝版本
dpkg -l | grep TensorRT

步驟 5:將 ONNX 模型轉換為 TensorRT 引擎
模型準備:
- 將神經網路轉換為 ONNX 格式
- 確保 ONNX 模型與 TensorRT 相容
轉換命令:
# 將 ONNX 模型轉換為 TensorRT 引擎(FP16 + INT8)
# Jetson 請使用 /usr/src/tensorrt/bin/trtexec
$ trtexec --onnx=your_model.onnx \
--saveEngine=model_int8.engine \
--int8 --fp16
轉換選項:
--onnx=<path>:輸入 ONNX 模型檔案--saveEngine=<path>:輸出 TensorRT 引擎檔案--int8:啟用 INT8 量化(需要校準)--fp16:啟用 FP16 精度

步驟 6:運行 TensorRT 引擎
執行:
# 載入並運行 TensorRT 引擎
# Jetson 請使用 /usr/src/tensorrt/bin/trtexec
$ trtexec --loadEngine=model_int8.engine \
--warmUp=200 \
--duration=120 \
--device=0
性能指標:
- WarmUp:200 次迭代以穩定
- Duration:120 秒測量期間
- Device:GPU 設備索引(單 GPU 為 0)

快速開始指南
完整工作流程
# 1. 驗證安裝
nvidia-smi
nvcc --version
# 2. 轉換模型
trtexec --onnx=model.onnx --saveEngine=model.engine --fp16
# 3. 運行推論
trtexec --loadEngine=model.engine --duration=120
常見使用案例
| 情境 | 命令 |
|---|---|
| 僅 FP16 | trtexec --onnx=model.onnx --saveEngine=model.engine --fp16 |
| 僅 INT8 | trtexec --onnx=model.onnx --saveEngine=model.engine --int8 |
| 混合精度 | trtexec --onnx=model.onnx --saveEngine=model.engine --int8 --fp16 |
| 配置 GPU | trtexec --onnx=model.onnx --profilingVerbosity=detailed --profile=profile.txt |
參考
額外資源
優化提示
- 大多數模型使用 FP16 - 以最小精度損失獲得 2 倍速度提升
- 為可量化模型啟用 INT8 - 額外 2 倍速度提升
- 配置您的模型 - 使用
--profilingVerbosity=detailed識別瓶頸 - 批次大小優化 - 根據您的使用案例和延遲需求調整
故障排除
常見問題:
- 安裝失敗:檢查 NVIDIA 驅動版本相容性
- 引擎轉換失敗:驗證 ONNX 模型格式和 opset 版本
- 性能問題:確保 GPU 未降頻且散熱充足